<?php
Class GestdateHelper extends AppHelper{
    function getTimestamp($date){
        $date=explode(" ",$date);
        $heure= explode(":",$date[1]);
        $date= explode("-",$date[0]);
        return mktime($heure[0],$heure[1],$heure[2],$date[1],$date[2],$date[0]);
    }
    function getFormatedDate($date){
      if ($this->_checkthedate($date)){
       $d=new datetime($date);
       return "the ".$d->format("jS F Y")." at ".$d->format("H:i:s");
      }else{
          return $date;
      }
    }
    function _checkthedate($date){
        $date=explode(" ",$date);
        $date= explode("-",$date[0]);
        return checkdate($date[1],$date[2],$date[0]);
    }

    function NbJours($date1, $date2) {

        $tdate=explode(" ",$date1);
        $theure1= explode(":",$tdate[1]);
        $tdate1= explode("-",$tdate[0]);

        $tdate=explode(" ",$date2);
        $theure2= explode(":",$tdate[1]);
        $tdate2= explode("-",$tdate[0]);

  $diff = mktime($theure1[0], $theure1[1], $theure1[2], $tdate1[1], $tdate1[2], $tdate1[0]) -
          mktime($theure2[0], $theure2[1], $theure2[2], $tdate2[1], $tdate2[2], $tdate2[0]);

  return(floor($diff/(60*60*24)));

}

// Fonction permettant de compter le nombre de jours ouvrés entre deux dates
function get_nb_open_days($date_start, $date_stop) {
    $date_start = strtotime($date_start);
$date_stop = strtotime($date_stop);

	$arr_bank_holidays = array(); // Tableau des jours feriés

	// On boucle dans le cas où l'année de départ serait différente de l'année d'arrivée
	$diff_year = date('Y', $date_stop) - date('Y', $date_start);
	for ($i = 0; $i <= $diff_year; $i++) {
		$year = (int)date('Y', $date_start) + $i;
		// Liste des jours feriés
		$arr_bank_holidays[] = '1_1_'.$year; // Jour de l'an
		$arr_bank_holidays[] = '1_5_'.$year; // Fete du travail
		$arr_bank_holidays[] = '8_5_'.$year; // Victoire 1945
		$arr_bank_holidays[] = '14_7_'.$year; // Fete nationale
		$arr_bank_holidays[] = '15_8_'.$year; // Assomption
		$arr_bank_holidays[] = '1_11_'.$year; // Toussaint
		$arr_bank_holidays[] = '11_11_'.$year; // Armistice 1918
		$arr_bank_holidays[] = '25_12_'.$year; // Noel

		// Récupération de paques. Permet ensuite d'obtenir le jour de l'ascension et celui de la pentecote
		$easter = easter_date($year);
		$arr_bank_holidays[] = date('j_n_'.$year, $easter + 86400); // Paques
		$arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*39)); // Ascension
		$arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*50)); // Pentecote
	}
	//print_r($arr_bank_holidays);
	$nb_days_open = 0;
	// Mettre <= si on souhaite prendre en compte le dernier jour dans le décompte
	while ($date_start < $date_stop) {
		// Si le jour suivant n'est ni un dimanche (0) ou un samedi (6), ni un jour férié, on incrémente les jours ouvrés
		if (!in_array(date('w', $date_start), array(0, 6))
		&& !in_array(date('j_n_'.date('Y', $date_start), $date_start), $arr_bank_holidays)) {
			$nb_days_open++;
		}
		$date_start = mktime(date('H', $date_start), date('i', $date_start), date('s', $date_start), date('m', $date_start), date('d', $date_start) + 1, date('Y', $date_start));
	}
	return $nb_days_open;
}
// Exemple : Du 11 au 15 juillet il n'y a qu'un jour ouvré (week-end + 1 jours férié)



}

?>
